package me.wangshier.mongodb.domain;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
// 表明 Ingredient 是一个文档实体，可以写入 Mongo 数据库，也可以从中进行读取。
// 集合名（集合在 Mongo 中类似于关系型数据库中的表）是基于类名的，其中第一个字母会变成小写。
// 我们没有特殊指定，所以 Ingredient 对象会被持久化到名为 ingredient 的集合中，
// 但是我们可以通过设置@Document 的 collection 属性来修改这一点
@Document // @Document(collection = "ingredients")
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PRIVATE, force = true)
public class Ingredient {

    // 这表明该属性将会作为持久化文档的 ID
    @Id
    private String id;
    private String name;
    private Type type;

    public enum Type {
        WRAP, PROTEIN, VEGGIES, CHEESE, SAUCE
    }
}